package com.yangwudi.service.impl;

import com.yangwudi.mapper.EmpLogMapper;
import com.yangwudi.pojo.EmpLog;
import com.yangwudi.service.EmpLogService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Propagation;
import org.springframework.transaction.annotation.Transactional;

@Service
public class EmpLogServiceImpl implements EmpLogService {

    @Autowired
    private EmpLogMapper empLogMapper;

    //propagation
    //常用！！！属性: REQUIRED 【默认值】需要事务。有则加入，无则创建新事务
    //常用！！！属性: REQUIRES_NEW 需要一个新的事务，无论有无，都创建新事务
    //属性: SUPPORTS 支持事务，如果有则加入，无则在无事务状态中运行
    //属性: NOT_SUPPORTED 不支持事务，无事务状态中运行，如果有事务则挂起当前事务
    //属性: MANDATORY 必须有事务，无则抛异常
    //属性: NEVER     必须无事务，有则抛异常


    //-----------------事务四大特性(ACID)-----------------
    //1. 原子性(Atomicity)：事务是一个不可分割的工作单元，事务中的操作要么都做，要么都不做
    //2. 一致性(Consistency)：事务前后数据保持一致
    //3. 隔离性(Isolation)：多个事务之间不能互相干扰
    //4. 持久性(Durability)：事务处理完成之后，结果会持久化到数据库中
    @Transactional(propagation = Propagation.REQUIRES_NEW)  //需要在一个新的事务中运行
    @Override
    public void insertLog(EmpLog empLog) {
        empLogMapper.insert(empLog);
    }
}
